Modern database systems can contain very large amounts of data. As storage costs decrease, database systems take advantage of the easy availability of extra capacity, storing more and more data that might not have previously been deemed worthwhile to keep. A database storage system that stores too much data in its online transactional systems can suffer performance degradation due to processing overhead. A common method of addressing this difficulty is to separate the data storage between two systems, an online system that can access data more readily and an offline system that can store data without affecting the performance of the online system. When data from the offline system is required, it is requested and transferred to the online system. Determining which data are important enough to store in the online system is a very taxing job for a system administrator, and the division of data must be kept up to date as new data are added and usage patterns change.